Audio/Video streaming technologies are widely used for broadcasting multimedia content across the Internet. Streaming refers to a technique for transferring data such that it can be processed as a steady and continuous stream. Streaming provides a useful download method since many users do not have fast enough access to download large multimedia files quickly. With streaming, the client browser may start displaying the data before the entire file has been transmitted.
For streaming to work however, the server side transmitting the data collects the data and sends it as a steady stream to the application that is processing the data and converting it to sound or pictures. If the streaming client receives the data more quickly than required, it needs to save the excess data in a buffer. If the buffer fills too quickly, the buffer may become full and some data may be skipped since it wasn't stored. In contrast, if the data doesn't come quickly enough, then the buffer may empty and the data delivered to the application that is processing the data and converting it to sound or pictures may need to be paused to allow the buffer to fill to a reasonable level.
The shortcomings of streaming data have significant implications for broadcast audio/video applications across the Internet. Currently, much of multimedia transferred across the Internet is free. However, streaming technologies are advancing into the pay arena, where users pay for content. Providers of the content therefore have a great need to provide streaming data with as few glitches as possible, so that the client is satisfied with paying for the service. Furthermore, live applications that do not allow the data to be paused, such as network conferencing, also need a solution to provide integrity of the audio/video output and prevent losses of portions of the multimedia being transmitted. In addition, a solution is also needed for other broadcast scenarios exist where synchronizing the input and processing of the data is problematic, such as when a single server is broadcasting to multiple clients.